package com.captain.leetcode2.important;

import com.captain.leetcode.链表.ListNode;

import java.util.List;

/**
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 * <p>
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 * <p>
 * 输入：head = [1,2,3,4,5,6]
 * 输出：[2,1,4,3]
 * <p>
 * 输入：head = []
 * 输出：[]
 */
public class 两两交换链表中的节点24 {
    public static void main(String[] args) {
        new 两两交换链表中的节点24().swapPairs(ListNode.getInstance());
    }

    public ListNode swapPairs(ListNode head) {
        //0 1 2 3 4
        if (head == null) return null;
        ListNode dummy = new ListNode(-101);
        dummy.next = head;
        ListNode cur = dummy;
        while (cur.next != null && cur.next.next != null) {
            ListNode n1 = cur.next;
            ListNode n2 = cur.next.next;
            cur.next = n2;
            n1.next = n1.next.next;
            n2.next = n1;
            cur = n1;
        }
        return dummy.next;
    }
}
